using System;

namespace BubbleSortDemo
{
    public class Demo
    {
        /// <summary>
        /// 冒泡排序方法
        /// </summary>
        /// <param name="array">待排序的整数数组</param>
        public void BubbleSort(int[] array)
        {
            if (array == null || array.Length <= 1)
                return;

            int n = array.Length;
            
            // 外层循环控制排序的轮数
            for (int i = 0; i < n - 1; i++)
            {
                bool swapped = false;
                
                // 内层循环进行每一轮的比较和交换
                for (int j = 0; j < n - i - 1; j++)
                {
                    // 如果当前元素大于下一个元素，交换它们
                    if (array[j] > array[j + 1])
                    {
                        // 交换元素
                        int temp = array[j];
                        array[j] = array[j + 1];
                        array[j + 1] = temp;
                        
                        swapped = true;
                    }
                }
                
                // 如果某一轮没有发生交换，说明数组已经有序，可以提前退出
                if (!swapped)
                    break;
            }
        }

        /// <summary>
        /// 打印数组元素
        /// </summary>
        /// <param name="array">要打印的数组</param>
        /// <param name="message">输出信息</param>
        public void PrintArray(int[] array, string message)
        {
            Console.WriteLine(message);
            Console.WriteLine(string.Join(" ", array));
            Console.WriteLine();
        }
    }
}